import route from "mock/route";
import teacher from "./pages/teacher";
// src/access.ts（补充常量定义，与路由权限匹配）
export const ADMIN_PAGE = 'adminRouteFilter';
export const SETTINGS_PAGE = 'adminRouteFilter';
export const CARD_PAGE = 'adminRouteFilter';
export const LIST_TABLE_LIST_PAGE = 'adminRouteFilter';
export const CLASS_PAGE = 'normalRouteFilter';
export const STUDY_PAGE = 'normalRouteFilter';
export const GOODS_PAGE = 'normalRouteFilter';
export const GOODS_MANAGEMENT_PAGE = 'normalRouteFilter';
export const ORDER_MANAGEMENT_PAGE = 'adminRouteFilter';
export const BANNER_MANAGEMENT_PAGE = 'adminRouteFilter';
/**
 * @see https://umijs.org/docs/max/access#access
 * 权限控制函数：从本地存储获取用户信息判断权限
 */
export default function access() {
  // 从本地存储读取用户信息
  const getUserFromLocalStorage = () => {
    try {
      const userStr = localStorage.getItem('userInfo');
      if (userStr) {
        return JSON.parse(userStr); // 解析用户信息（包含isAdmin等字段）
      }
      return null; // 未登录或无用户信息
    } catch (error) {
      console.error('读取本地用户信息失败', error);
      return null;
    }
  };

  const currentUser = getUserFromLocalStorage();
  // 判断是否为管理员（根据本地存储的用户信息）
  const isAdmin = currentUser?.isAdmin === true;

  // 普通用户可访问的路由名称集合（与路由配置中的name字段对应）
  const normalRoutes = [
    "dashboard",
    "user",
    "数据统计",    // 对应路由中的name: '数据统计'
    "班级管理",    // 对应路由中的name: '班级管理'
    "打卡任务",    // 对应路由中的name: '打卡任务'
    "学员管理",    // 对应路由中的name: '学员管理'
    "商品分类",    // 对应路由中的name: '商品分类'
    "商品管理",    // 对应路由中的name: '商品管理'
    "商品列表",    // 对应路由中的name: '商品列表'
    "商品回收站",   // 对应路由中的name: '商品回收站'
    "教师管理"
  ];

  // 管理员额外可访问的路由名称集合
  const adminRoutes = [
    "admin",
    "settings",
    "card",
    "list.table-list",
    "class",
    "study",
    "goods",
    "teacher",
    "订单管理",    // 对应路由中的name: '订单管理'
    "轮播管理"     // 对应路由中的name: '轮播管理'
  ];

  // 所有用户（包括未登录）可访问的路由
  const allUserRoutes = ["welcome", "login"];

  // 合并管理员可访问的所有路由
  const adminAccessibleRoutes = isAdmin
    ? [...normalRoutes, ...adminRoutes]
    : normalRoutes;

  return {
    // 管理员路由过滤：仅管理员可访问
    adminRouteFilter: () => isAdmin,

    // 普通路由过滤：根据用户角色匹配可访问路由
    normalRouteFilter: (route) => {
      // 路由名称不存在时默认不可访问
      if (!route.name) return false;
      // 管理员校验
      if (isAdmin) {
        return adminAccessibleRoutes.includes(route.name);
      }
      // 普通用户校验
      return normalRoutes.includes(route.name);
    },

    // 所有用户路由过滤：未登录也可访问
    allUserRouteFilter: (route) => {
      return route.name && allUserRoutes.includes(route.name);
    },
  };
}
